package leetcode.N601_N700;

import java.util.Objects;

public class N682 {



    public int calPoints(String[] ops) {
        // 用于存放有效分数的分数表
        int [] nums = new int [ops.length];
        // 分数表中下一个空位的下标
        int index = 0;

        for (String s : ops) {
            // 如果是操作符C，则清除上一轮的有效分数
            if (Objects.equals(s, "C")) {
                index--;
                continue;
            }

            // 如果是操作符D，则计算本轮分数 上一轮的两倍 放入分数表中
            if (Objects.equals(s, "D")) {
                // 计算本轮轮分数
                int num = nums[index - 1] * 2;
                // 存入本轮分数
                nums[index++] = num;
                continue;
            }

            // 如果是操作符+，则计算本轮分数 上两轮之和 分入分数表中
            if (Objects.equals(s, "+")) {
                // 计算本轮轮分数
                int num = nums[index - 1] + nums[index -2];
                // 存入本轮分数
                nums[index++] = num;
                continue;
            }
            // 数字 直接放入分数表中
            nums[index++] = Integer.valueOf(s);
        }

        int sum = 0;
        for (int i = 0; i < index; i++) {
            sum += nums[i];
        }
        return sum;
    }
}
